// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package http

// HTTP status codes, defined in RFC 2616.
const (
	StatusContinue           = 100
	StatusSwitchingProtocols = 101

	StatusOK                   = 200
	StatusCreated              = 201
	StatusAccepted             = 202
	StatusNonAuthoritativeInfo = 203
	StatusNoContent            = 204
	StatusResetContent         = 205
	StatusPartialContent       = 206

	StatusMultipleChoices   = 300
	StatusMovedPermanently  = 301
	StatusFound             = 302
	StatusSeeOther          = 303
	StatusNotModified       = 304
	StatusUseProxy          = 305
	StatusTemporaryRedirect = 307

	StatusBadRequest                   = 400
	StatusUnauthorized                 = 401
	StatusPaymentRequired              = 402
	StatusForbidden                    = 403
	StatusNotFound                     = 404
	StatusMethodNotAllowed             = 405
	StatusNotAcceptable                = 406
	StatusProxyAuthRequired            = 407
	StatusRequestTimeout               = 408
	StatusConflict                     = 409
	StatusGone                         = 410
	StatusLengthRequired               = 411
	StatusPreconditionFailed           = 412
	StatusRequestEntityTooLarge        = 413
	StatusRequestURITooLong            = 414
	StatusUnsupportedMediaType         = 415
	StatusRequestedRangeNotSatisfiable = 416
	StatusExpectationFailed            = 417

	StatusInternalServerError     = 500
	StatusNotImplemented          = 501
	StatusBadGateway              = 502
	StatusServiceUnavailable      = 503
	StatusGatewayTimeout          = 504
	StatusHTTPVersionNotSupported = 505
)

var statusText = map[int]string{
	StatusContinue: "Continue",
	StatusSwitchingProtocols: "Switching Protocols",

	StatusOK: "OK",
	StatusCreated: "Created",
	StatusAccepted: "Accepted",
	StatusNonAuthoritativeInfo: "Non-Authoritative Information",
	StatusNoContent: "No Content",
	StatusResetContent: "Reset Content",
	StatusPartialContent: "Partial Content",

	StatusMultipleChoices: "Multiple Choices",
	StatusMovedPermanently: "Moved Permanently",
	StatusFound: "Found",
	StatusSeeOther: "See Other",
	StatusNotModified: "Not Modified",
	StatusUseProxy: "Use Proxy",
	StatusTemporaryRedirect: "Temporary Redirect",

	StatusBadRequest: "Bad Request",
	StatusUnauthorized: "Unauthorized",
	StatusPaymentRequired: "Payment Required",
	StatusForbidden: "Forbidden",
	StatusNotFound: "Not Found",
	StatusMethodNotAllowed: "Method Not Allowed",
	StatusNotAcceptable: "Not Acceptable",
	StatusProxyAuthRequired: "Proxy Authentication Required",
	StatusRequestTimeout: "Request Timeout",
	StatusConflict: "Conflict",
	StatusGone: "Gone",
	StatusLengthRequired: "Length Required",
	StatusPreconditionFailed: "Precondition Failed",
	StatusRequestEntityTooLarge: "Request Entity Too Large",
	StatusRequestURITooLong: "Request URI Too Long",
	StatusUnsupportedMediaType: "Unsupported Media Type",
	StatusRequestedRangeNotSatisfiable: "Requested Range Not Satisfiable",
	StatusExpectationFailed: "Expectation Failed",

	StatusInternalServerError: "Internal Server Error",
	StatusNotImplemented: "Not Implemented",
	StatusBadGateway: "Bad Gateway",
	StatusServiceUnavailable: "Service Unavailable",
	StatusGatewayTimeout: "Gateway Timeout",
	StatusHTTPVersionNotSupported: "HTTP Version Not Supported",
}
